home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / lander.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-10-05  |  13.8 KB  |  270 lines

  1. 10  CLEAR,,2000:A$="Version   6.0"  ' Program : LANDER.BAS
  2. 20  ' (C) Copyright 1982, IBM Corporation, Armonk, New York, USA
  3. 30  'J. F. Ziegler, IBM-Research, Yorktown, NY 10598, 914-945-2165
  4. 40  GOSUB 1130    'Get lander pictures from disk.
  5. 50  GOSUB 110     'Setup initial conditions
  6. 60  GOSUB 360     'Display Moving ship
  7. 70  GOSUB 720     'Test for Crash or Landing
  8. 80  GOSUB 610     'Revise control parameters
  9. 90  GOSUB 480     'See if any keys pressed.
  10. 100  GOTO 60       'CYCLE.
  11. 110  REM##########  SETUP  INITIAL  CONDITIONS  ##########
  12. 120  REM X,Y=POSITION, F=FUEL, T=THRUST, SX,SY=SPEED, TILT=MODULE TILT, GRAV=GRAVITY, S=SCORE
  13. 130  Z=FRE(A$):F=4000*(1-S/1000):F0=F:T=10:SX=30:SY=0:GRAV=10+S/100:X=0:Y=0:ANG=1:TILT=1:C=1:IF F<1500 THEN F=1500
  14. 140  XOLD=X:YOLD=Y:TILTOLD=TILT:TOLD=T
  15. 150  CLS:SCREEN 1:COLOR 0,1:LAND=1:KEY OFF:A=RND(100*-VAL(RIGHT$(TIME$,2))):FOR I=1 TO 5:A$=INKEY$:NEXT:IF GRAV>15 THEN GRAV=15
  16. 160  IF GAUGE=0 GOTO 190
  17. 170  LOCATE 1,28:PRINT " Score=" S:LOCATE 2,29:PRINT " Fall=" SY
  18. 180  LOCATE 3,28:PRINT "Thrust=" T:LOCATE 4,30:PRINT "Fuel=" F:GOTO 240
  19. 190  LOCATE 1,30:PRINT"F   F   P":LOCATE 2,30:PRINT"u   a   o":LOCATE 3,30:PRINT"e   l   w":LOCATE 4,30:PRINT"l   l   e":LOCATE 5,30:PRINT"        r"
  20. 200  LINE(241,0)-(257,35),1,BF:LINE(241,36)-(257,40),2,BF 'Fuel Gauge
  21. 210  LINE(273,5)-(289,10),1,BF:LINE(273,11)-(289,40),2,BF:LINE(273,0)-(289,4),2,BF 'Fall Gauge
  22. 220  LINE(304,15)-(319,25),1,BF:LINE(304,26)-(319,40),2,BF:LINE(304,0)-(319,14),2,BF 'Power Gauge
  23. 230  G1=0:LINE (241,G1)-(257,G1),0:G2=10:LINE(273,G2)-(289,G2),3:G3=20:LINE(304,G3)-(319,G3),3
  24. 240  REM########### land picture  ##############################
  25. 250  LX(1)=0:LY(1)=40:LINE(LX(1),LY(1))-(LX(1)+1,LY(1)),1
  26. 260  BOT=30+260*RND  ' X-VALUE OF FIELD.
  27. 270  FOR I=2 TO LP
  28. 280  LY(I)=LY(1)+(194-LY(1))*ABS(COS(3.14*(1+S/600)*(LX(I)-BOT-15)/400))
  29. 290  LY(I)=LY(I)+SQR(LY(I))*(0.5-RND)  'add noise to land contour.
  30. 300  IF((LX(I)>BOT)AND(LX(I)<(BOT+30)))THEN LY(I)=198  ' landing field
  31. 310  IF(LY(I)>198)THEN LY(I)=198 'prevent overflow of screen
  32. 320  LINE -(LX(I),LY(I)),3:NEXT
  33. 330  PAINT(0,199),1,3:LINE (BOT+5,193)-(BOT+25,199),2,BF
  34. 340  IF S>ADLAND THEN FOR I=0 TO 6:PSET(BOT+I*5,180),2:NEXT 'Window for Advan.Lndr.
  35. 350  PUT(X,Y),R1:ADVAN=0:BEEP:RETURN 'ADVAN=1 FOR ADVANCED LANDER GAME.
  36. 360  '############  Display moving Ship   and Gauges ####################
  37. 370  GOSUB 1960:IF MUSIC=1 GOTO 390 ELSE IF F=0 GOTO 390 '  Display picture.
  38. 380  PLAY "mb":SOUND TUNE(C,0),TUNE(C,1):SOUND TUNE(C+1,0),TUNE(C+1,1):C=C+2:IF C>149 THEN C=1  'Play "Blue DAnube Waltz"
  39. 390  IF GAUGE=0 GOTO 420 ELSE LOCATE 2,35:PRINT INT(-SY):LOCATE 3,35:PRINT INT(T)
  40. 400  LOCATE 4,35:PRINT INT(F): IF F=0 THEN SOUND 99,0:BEEP
  41. 410  RETURN
  42. 420  GG1=INT(40-40*F/F0):IF GG1=G1 THEN GOTO 430 ELSE LINE(241,GG1)-(257,GG1),0
  43. 430  G1=GG1:GG2=INT(5+SY/(2.8+(S>ADLAND))):IF GG2<0 THEN GG2=0 ELSE IF GG2>40 THEN GG2=40
  44. 440  IF GG2=G2 THEN GOTO 450 ELSE LINE(273,GG2)-(289,GG2),3:IF G2<11 AND G2>4 THEN LINE(273,G2)-(289,G2),1 ELSE LINE(273,G2)-(289,G2),2
  45. 450  G2=GG2:GG3=INT(40-40*T/19):IF GG3=G3 THEN GOTO 460 ELSE LINE(304,GG3)-(319,GG3),3:IF G3<26 AND G3>14 THEN LINE(304,G3)-(319,G3),1 ELSE LINE(304,G3)-(319,G3),2
  46. 460  G3=GG3:IF F=0 THEN SOUND 99,0:BEEP
  47. 470  RETURN
  48. 480  '########  Check KEYBOARD for commands  ############################
  49. 490  K$=RIGHT$(INKEY$,1):IF (K$="")THEN RETURN:IF (F=0)THEN RETURN
  50. 500  A$=INKEY$:  ' IF A$><"" GOTO 500
  51. 510  J=INSTR("HPMK"+CHR$(27),K$):ON J GOTO 530,550,570,590,850
  52. 520  RETURN
  53. 530  T=T+1:IF T>19 THEN T=19
  54. 540  RETURN
  55. 550  T=T-1:IF(T<0)THEN T=0
  56. 560  RETURN
  57. 570  TILT=TILT+1:IF (TILT>NANG)THEN TILT=1
  58. 580  RETURN
  59. 590  TILT=TILT-1:IF (TILT<1)THEN TILT=NANG
  60. 600  RETURN
  61. 610  '################ Revise CONTROL parameters  ####################
  62. 620  SY=SY+GRAV-T*COS(3.14*ANG(TILT)/180):SX=0.9*SX+T*SIN(3.14*ANG(TILT)/180) ' SX has air drag.
  63. 630  IF (SY<-10)THEN SY=-10
  64. 640  X=X+SX*0.05:Y=Y+SY*0.05:IF (Y<0) THEN Y=0
  65. 650  IF (Y+MY>199)THEN Y=199-MY
  66. 660  IF (X<0)THEN X=0
  67. 670  IF(X+MX>319)THEN X=319-MX
  68. 680  IF(F=0) THEN T=0:RETURN
  69. 690  F=F-T:IF(F<0)THEN F=0:T=0:LOCATE 6,9:PRINT"Out of FUEL":GOSUB 710
  70. 700  RETURN
  71. 710  FOR J=1 TO 5:FOR K=1000 TO 2000 STEP 20:SOUND K,0.182:NEXT:NEXT:RETURN'alarm
  72. 720  '######## TEST FOR CRASH OR LANDING.  ##############################
  73. 730  IF Y>198-MY AND BOT<(5+X) AND (BOT+30)>(X+MX-5) GOTO 910
  74. 740  IF Y>198-MY GOTO 810
  75. 750  FOR I=(1+X/4) TO ((X+MX)/4-1):IF (Y+MY-6)>LY(I) GOTO 810:NEXT'Each LX=4 unit
  76. 760  IF S<ADLAND OR ADVAN=1 THEN RETURN
  77. 770  IF Y>185-MY AND BOT<(5+X) AND (BOT+30)>(X+MX-5) AND SY<10 GOTO 2430 ELSE RETURN
  78. 780  '################# END OF PROGRAM  ########################
  79. 790  FOR I=0 TO 8 STEP 2:COLOR I,1:FOR J=1 TO 200:NEXT J:NEXT I:COLOR 8,1
  80. 800  LOCATE 5,1:PRINT STRING$(40,22);:PRINT STRING$(240,0);:PRINT STRING$(240,0);:PRINT STRING$(40,22);:RETURN
  81. 810  GOSUB 1000:GOSUB 1010:GOSUB 1020:GOSUB 790:LOCATE 6,1 :FOR I=1 TO 5:PRINT "     CRASH !!!  CRASH !!!  CRASH !!!":NEXT
  82. 820  LOCATE 12,8:PRINT"You need more practice !!"
  83. 830  A$=INKEY$:IF A$<>"" GOTO 830 ELSE LOCATE 15,1:PRINT"Press any key to continue":PRINT"Press `Q'= Quit;`S'=Silence;`M'=Music":PRINT"         Gauges `A'=Analog, `D'=Digital"
  84. 840  A$=INKEY$:IF A$="" GOTO 840
  85. 850  IF 0<>INSTR("Qq",A$) THEN STOP
  86. 860  IF 0<>INSTR("Ss",A$) THEN MUSIC=1
  87. 870  IF 0<>INSTR("Mm",A$) THEN MUSIC=0
  88. 880  IF 0<>INSTR("Aa",A$) THEN GAUGE=0
  89. 890  IF 0<>INSTR("Dd",A$) THEN GAUGE=1
  90. 900  IF S<ADLAND OR ADVAN=1 THEN GOTO 50 ELSE GOTO 1090
  91. 910   IF SY>15-6*ADVAN  GOTO 980
  92. 920  SOUND 99,0:IF (TILT<>1) GOTO 990 'Turn off "Blue Danube"
  93. 930  GOSUB 1000:C=1:D=30:GOSUB 1060:GOSUB 790:C=31:D=50:GOSUB 1060:LOCATE 9,10:PRINT "Perfect  Landing !!":S=S+INT(F/30):FOR I=0 TO 3500:NEXT:C=51:D=82:GOSUB 1060
  94. 940  IF S>SCOREMAX THEN SCOREMAX=S:GOSUB 960
  95. 950  LOCATE 11,1:PRINT"Your extra fuel makes your score = " S CHR$(13) CHR$(13) " (Max. score to date is " SCOREMAX " by " INIT$ ")":GOTO 830
  96. 960  LOCATE 11,1:PRINT"Your score is now " S " !!!!!!" CHR$(13) "This is the highest score up to now !!" CHR$(13) "Type in 3 initials for posterity :"
  97. 970  DEF SEG:POKE 106,0:INPUT "initials: ",A$:INIT$=LEFT$(A$,3):OPEN "lander.scr" FOR OUTPUT AS #3:PRINT#3,SCOREMAX,INIT$:CLOSE:GOSUB 790:RETURN
  98. 980  GOSUB 1000:GOSUB 1010:GOSUB 790:LOCATE 8,1:PRINT"Almost a good landing, but much too fast":LOCATE 10,2:PRINT"Your Fall Rate must be less than "15-5*ADVAN:GOTO 820
  99. 990  GOSUB 1000:GOSUB 1010:GOSUB 790:LOCATE 8,1:PRINT"Good landing, but please land on 2 feet!":GOTO 820
  100. 1000  T=0:GOSUB 360:RETURN ' Show ship with no rocket blast.
  101. 1010  SOUND 99,0:FOR J=1 TO 3:FOR K=1000 TO 2000 STEP 20:SOUND K,0.182:NEXT:NEXT:S=INT(S*0.7):RETURN ' Crash sound
  102. 1020   EX=10+X-(X<11)*10:EX=EX+(EX>309)*10:EY=Y+10-(Y<11)*10:EY=EY+(EY>189)*5 '***explosion***
  103. 1030   FOR I=0 TO NE:LINE(EX-EXPL(I,0),EY-EXPL(I,1))-(EX+EXPL(I,0),EY+EXPL(I,1)/2),2
  104. 1040   LINE(EX+EXPL(I,0),EY-EXPL(I,1))-(EX-EXPL(I,0),EY+EXPL(I,1)/2),2:NEXT:RETURN
  105. 1050  '############### Play MUSIC ##########################################
  106. 1060  SOUND 99,0:PLAY"MB":FOR J=C TO D:SOUND TUNE1(J,0),TUNE1(J,1)/2:IF TUNE1(J,0)><0 AND TUNE1(J,1)><1 THEN SOUND 32767,1
  107. 1070  NEXT
  108. 1080  RETURN'Above is "Stars and Stripes"
  109. 1090  SCREEN 0,1:COLOR 0,7,7:CLS:LOCATE 5,9:PRINT"Your score is now : " S:COLOR 15:LOCATE 7,5:PRINT"You will now be in Advanced-Lander ! !":LOCATE 12,1:COLOR 1:   PRINT"If you maneuver the lander through the  RED dots above the landing field with a"
  110. 1100  PRINT"fall rate less than 10, you will end    the landing in Advanced-Lander. The landwill be enlarged to allow you to  make aprecision landing. Your final fall rate must be less than ";
  111. 1110  COLOR 0:PRINT"-- 10 --",:COLOR 1:PRINT"for the landing to be OK.":LOCATE 24,7,0:COLOR 3:PRINT"Press any key to continue.";
  112. 1120  A$=INKEY$:IF A$="" GOTO 1120 ELSE GOTO 50
  113. 1130  '######################  START  PROGRAM  #########################
  114. 1140  DEF SEG=0:IF (109=PEEK (&H410))GOTO 1160' go to color screen if on Bw
  115. 1150  POKE &H410,(PEEK(&H410) AND &HCF) OR &H20:SCREEN 0
  116. 1160  KEY OFF:SCREEN 0,1:COLOR 4,7,7:WIDTH 40:CLS:LOCATE 4,12,0:PRINT "IBM    IBM    IBM"
  117. 1170  COLOR 7,1:LOCATE 6,12,0:PRINT "Personal Computer"
  118. 1180  COLOR 0,7:LOCATE 9,9,0:PRINT CHR$(201)+STRING$(21,205)+CHR$(187)
  119. 1190  LOCATE 10,9,0:PRINT CHR$(186)+STRING$(21,32)+CHR$(186)
  120. 1200  LOCATE 11,9,0:PRINT CHR$(186)+"    ROCKET LANDER    "+CHR$(186)
  121. 1210  LOCATE 12,9,0:PRINT CHR$(186)+STRING$(21,32)+CHR$(186)
  122. 1220  LOCATE 13,9,0:PRINT CHR$(186)+"    " A$ "    "+CHR$(186)
  123. 1230  LOCATE 14,9,0:PRINT CHR$(186)+STRING$(21,32)+CHR$(186)
  124. 1240  LOCATE 15,9,0:PRINT CHR$(200)+STRING$(21,205)+CHR$(188)
  125. 1250  COLOR 1,7:LOCATE 19,6,0:PRINT"Press any key for Instructions"
  126. 1260  COLOR 1,7:PRINT STRING$(3,13) "       J.F. Ziegler  IBM-Research"
  127. 1270  COLOR 1,7:PRINT "       (C) Copyright IBM Co. 1982";
  128. 1280  A$=INKEY$:IF A$="" GOTO 1280
  129. 1290  '################  INSTRUCTIONS   ################################
  130. 1300  CLS:COLOR 0:PRINT CHR$(13) "The object is to successfully land the  space-craft on the landing pad. This is done by changing the rocket thrust and  direction using the four position keys."
  131. 1310  LOCATE 7,1:COLOR 20:PRINT "    " CHR$(24);:COLOR 0:PRINT"  Increases the rocket thrust." CHR$(13)
  132. 1320  COLOR 20:PRINT "    " CHR$(25);:COLOR 0:PRINT "  Decreases rocket thrust." CHR$(13)
  133. 1330  COLOR 20:PRINT "    " CHR$(26);:COLOR 0:PRINT "  Tilts the rocket to the right." CHR$(13)
  134. 1340  COLOR 20:PRINT "    " CHR$(27);:COLOR 0:PRINT "  Tilts the rocket to the left." CHR$(13)
  135. 1350  COLOR 4:LOCATE 18,2:PRINT"Gravity = Vertical thrust of about 10.":COLOR 4,7:LOCATE 24,3:PRINT "  Press any key to start the game.";
  136. 1360  COLOR 3,7:LOCATE 20,2:ADLAND=100:PRINT"Advanced-Lander starts above 100 points.";
  137. 1370  '###########  Get Ship pictures from disk #######################
  138. 1380  '####### M = Module; R = Small rocket; RR = Large rocket ########
  139. 1390  DEFINT M,R,P,X,T,L,B: S=66: DIM PDATA(20)
  140. 1400  DIM M1(S),M2(S),M3(S),M4(S),M5(S),M6(S),M7(S),M8(S),M9(S),M10(S),M11(S),M12(S),M13(S)
  141. 1410  DIM R1(S),R2(S),R3(S),R4(S),R5(S),R6(S),R7(S),R8(S),R9(S),R10(S),R11(S),R12(S),R13(S)
  142. 1420  DIM RR1(S),RR2(S),RR3(S),RR4(S),RR5(S),RR6(S),RR7(S),RR8(S),RR9(S),RR10(S),RR11(S),RR12(S),RR13(S)
  143. 1430  DEF SEG=0:A=VARPTR(PDATA(0))
  144. 1440  DEF SEG:BLOAD"LANDER.BIN",A
  145. 1450  NANG=PDATA(0):SIZE=PDATA(1):MX=PDATA(2):MY=PDATA(3)
  146. 1460  DIM ANG(NANG):FOR I=1 TO NANG:ANG(I)=PDATA(3+I):NEXT
  147. 1470  OPEN "lander.scr" FOR INPUT AS #2 'Get maximum score to date.
  148. 1480  INPUT#2,SCOREMAX,INIT$:CLOSE
  149. 1490  DEFINT L: LP=80:DIM LX(LP),LY(LP),LAX(LP),LAY(LP) '  LAND pictures.
  150. 1500  LX(1)=0:LY(1)=40:LAY(1)=0:BOT=224:FOR I=2 TO LP :LAX(I)=I*319/LP:LX(I)=LAX(I)'Adv-Lander Field
  151. 1510  LAY(I)=LAY(1)+(194-LAY(1))*ABS(COS(3.14*(LAX(I)-BOT-15)/400))
  152. 1520  LAY(I)=LAY(I)+SQR(LAY(I))*(0.5-RND)  'add noise to land contour.
  153. 1530  IF((LAX(I)>BOT)AND(LAX(I)<(BOT+30)))THEN LAY(I)=198  ' landing field
  154. 1540  IF(LAY(I)>198)THEN LAY(I)=198
  155. 1550  NEXT
  156. 1560  NE=10:DIM EXPL(NE,1):FOR I=0 TO NE:READ EXPL(I,0),EXPL(I,1):NEXT'Explosion
  157. 1570  DATA 0,10,1,7,2,8,3,3,4,2,5,8,6,7,7,1,8,6,9,2,10,0
  158. 1580  DIM IBMX(75),IBMY(75) ' Get IBM Logo.
  159. 1590  FOR I=0 TO 75:READ IBMX(I):NEXT
  160. 1600  FOR I=0 TO 75 STEP 2:READ IBMY(I):IBMY(I+1)=IBMY(I):NEXT
  161. 1610  DATA 0,4,7,13.5,18,21.5,27,30,0,4,7,14.5,18,22.5,26,30,1,3,8,10,12.5,15,19,23,25.5,29,1,3,8,14.5,19,24,25,29,1,3,8,14.5,19,21,21.6,26.4,27,29,1,3,8,10,12.5,15,19,21,22.3,25.7,27,29,0,4,7,14.5,18,21,23,25,27,30,0,4,7,13.5,18,21,23.5,24.5,27,30
  162. 1620  DATA 0,0,0,0,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7
  163. 1630  DIM MM(88),TUNE(150,1):FOR I=0 TO 6:MM(I)=32767:NEXT ' Get success tune.
  164. 1640  FOR I=7 TO 88: MM(I)=INT(36.8*(2^(1/12))^(I-6)):NEXT
  165. 1650  FOR I=1 TO 150:READ A,TUNE(I,1):TUNE(I,0)=MM(A):NEXT
  166. 1660  'Blue Danube Waltz by J.S.Strauss
  167. 1670  DATA 42,4,46,4,49,4,49,4,0,4,61,2,0,2,61,2,0,6,58,2,0,2,58,2,0,6,42,4,42,4
  168. 1680  DATA 46,4,49,4
  169. 1690  DATA 49,4,0,4,61,2,0,2,61,2,0,6,59,2,0,2,59,2,0,6,41,4,41,4,44,4,51,4,51,4
  170. 1700  DATA 0,4,63,2,0,2,63,2,0,6,59,2,0,2
  171. 1710  DATA 59,2,0,6,41,4,41,4,44,4,51,4,51,4,0,4,63,2,0,2,63,2,0,6,58,2,0,2,58,2
  172. 1720  DATA 0,6,42,4
  173. 1730  DATA 42,4,46,4,49,4,54,4,0,4,66,2,0,2,66,2,0,6,61,2,0,2,61,2,0,6,42,4
  174. 1740  DATA 42,4,46,4,49,4,54,4,0,4,66,2,0,2
  175. 1750  DATA 66,2,0,6,63,2,0,2,63,2,0,6,44,4,44,4,47,4,51,2,0,2,51,14,0,2,48,4
  176. 1760  DATA 49,4,58,16
  177. 1770  DATA 54,4,46,4,46,8,44,4,51,8,49,4,42,4,0,2,42,2,42,4,0,8,49,2,0,2,47,2
  178. 1780  DATA 0,6,49,2,0,2
  179. 1790  DATA 47,2,0,6,49,4,58,16,56,4,49,2,0,2,46,2,0,6,49,2,0,2,46,2,0,6,49,4
  180. 1800  DATA 56,16,54,4,49,2,0,2,47,2,0,6,49,2,0,2,47,2,0,6,49,4,58,16
  181. 1810  DATA 56,4,49,4,54,4,56,4,58,4,61,8,59,4,58,2,58,2,58,4,56,2,0,2,54,4,0,8
  182. 1820  DIM TUNE1(82,1):FOR I=1 TO 82:READ A,TUNE1(I,1):TUNE1(I,0)=MM(A):NEXT
  183. 1830  '"STARS AND STRIPES FOREVER - SOUSA "
  184. 1840  DATA 54,6,54,6,52,3,51,3,51,6,50,3,51,3,51,16,0,2,50,3
  185. 1850  DATA 51,3,51,6,50,3,51,3
  186. 1860  DATA 54,6,51,3,54,3,52,12,49,6,0,3,49,3,49,6,48,3,49,3
  187. 1870  DATA 49,6,48,3,49,3
  188. 1880  DATA 52,16,0,2,51,3,49,3,51,3,54,9,56,9,56,3,49,16,0,2,54,6
  189. 1890  DATA 54,6,52,3,51,3,51,6,50,3,51,3,51,16,0,2,50,3,51,3,51,6,50,3 ,51,3
  190. 1900  DATA 52,3,51,3,49,5,46,1,49,12,47,6,0,3,47,3,47,6,46,3,47,3,50,6,49,3,47,3
  191. 1910  DATA 59,15,0,3,47,3,49,3,51,3,54,1,0,2,47,3,49,3,51,3,54,1,0,2,42,3,44,5
  192. 1920  DATA 51,1,49,12,47,1
  193. 1930  ADVAN=0:GAUGE=0
  194. 1940  A$=INKEY$:IF A$="" GOTO 1940
  195. 1950  S=0:RETURN
  196. 1960  '##############  Get New SHIP picture  #########################
  197. 1970  ON INT(1.8+TOLD/10) GOSUB 2010,2150,2290 'Erase old picture.
  198. 1980  XOLD=X:YOLD=Y:TILTOLD=TILT:TOLD=T
  199. 1990  ON INT(1.8+T/10) GOSUB 2010,2150,2290 'Draw new picture.
  200. 2000  TOLD=T:NEWPIC=0:RETURN
  201. 2010  ON TILTOLD GOTO 2020,2030,2040,2050,2060,2070,2080,2090,2100,2110,2120,2130,2140
  202. 2020  PUT(XOLD,YOLD),M1:RETURN
  203. 2030  PUT(XOLD,YOLD),M2:RETURN
  204. 2040  PUT(XOLD,YOLD),M3:RETURN
  205. 2050  PUT(XOLD,YOLD),M4:RETURN
  206. 2060  PUT(XOLD,YOLD),M5:RETURN
  207. 2070  PUT(XOLD,YOLD),M6:RETURN
  208. 2080  PUT(XOLD,YOLD),M7:RETURN
  209. 2090  PUT(XOLD,YOLD),M8:RETURN
  210. 2100  PUT(XOLD,YOLD),M9:RETURN
  211. 2110  PUT(XOLD,YOLD),M10:RETURN
  212. 2120  PUT(XOLD,YOLD),M11:RETURN
  213. 2130  PUT(XOLD,YOLD),M12:RETURN
  214. 2140  PUT(XOLD,YOLD),M13:RETURN
  215. 2150  ON TILTOLD GOTO 2160,2170,2180,2190,2200,2210,2220,2230,2240,2250,2260,2270,2280
  216. 2160  PUT(XOLD,YOLD),R1:RETURN
  217. 2170  PUT(XOLD,YOLD),R2:RETURN
  218. 2180  PUT(XOLD,YOLD),R3:RETURN
  219. 2190  PUT(XOLD,YOLD),R4:RETURN
  220. 2200  PUT(XOLD,YOLD),R5:RETURN
  221. 2210  PUT(XOLD,YOLD),R6:RETURN
  222. 2220  PUT(XOLD,YOLD),R7:RETURN
  223. 2230  PUT(XOLD,YOLD),R8:RETURN
  224. 2240  PUT(XOLD,YOLD),R9:RETURN
  225. 2250  PUT(XOLD,YOLD),R10:RETURN
  226. 2260  PUT(XOLD,YOLD),R11:RETURN
  227. 2270  PUT(XOLD,YOLD),R12:RETURN
  228. 2280  PUT(XOLD,YOLD),R13:RETURN
  229. 2290  ON TILTOLD GOTO 2300,2310,2320,2330,2340,2350,2360,2370,2380,2390,2400,2410,2420
  230. 2300  PUT(XOLD,YOLD),RR1:RETURN
  231. 2310  PUT(XOLD,YOLD),RR2:RETURN
  232. 2320  PUT(XOLD,YOLD),RR3:RETURN
  233. 2330  PUT(XOLD,YOLD),RR4:RETURN
  234. 2340  PUT(XOLD,YOLD),RR5:RETURN
  235. 2350  PUT(XOLD,YOLD),RR6:RETURN
  236. 2360  PUT(XOLD,YOLD),RR7:RETURN
  237. 2370  PUT(XOLD,YOLD),RR8:RETURN
  238. 2380  PUT(XOLD,YOLD),RR9:RETURN
  239. 2390  PUT(XOLD,YOLD),RR10:RETURN
  240. 2400  PUT(XOLD,YOLD),RR11:RETURN
  241. 2410  PUT(XOLD,YOLD),RR12:RETURN
  242. 2420  PUT(XOLD,YOLD),RR13:RETURN
  243. 2430  '################ Advanced-Lander Landing Field ##########################
  244. 2440  SCREEN 1:COLOR 0,1:CLS:LY(1)=0
  245. 2450  BEEP:LOCATE 1,1:PRINT"Advanced Lander":PRINT"Landing Fall":PRINT"less than -10-"
  246. 2460  LINE(LAX(1),LAY(1))-(LAX(1)+1,LAY(1)),1
  247. 2470  BOT=224:FOR I=2 TO LP :LY(I)=LAY(I)
  248. 2480  LINE -(LAX(I),LAY(I)),3:NEXT
  249. 2490  PAINT(0,199),1,3:LINE (BOT+5,193)-(BOT+25,199),2,BF
  250. 2500  LINE(120,160)-(145,199),2,BF
  251. 2510  FOR I=0 TO 2:LINE(125,165+10*I)-(140,169+10*I),3,BF:NEXT
  252. 2520  LINE (20,130)-(120,199),3,BF 'bldg
  253. 2530  LINE (35,110)-(105,130),0,BF
  254. 2540  FOR I=0 TO 5:FOR J=0 TO 2:LINE(30+14*I,140+J*14)-(40+14*I,150+J*14),0,BF:NEXT:NEXT
  255. 2550  LINE(65,185)-(75,199),0,BF
  256. 2560  LINE(146,175)-(205,199),3,BF
  257. 2570  FOR I=0 TO 4:LINE(150+10*I,178)-(158+10*I,191),0,BF:NEXT
  258. 2580  X=40:Y=113 ' Draw IBM LOGo on Bldg
  259. 2590  FOR I=0 TO 75 STEP 2:LINE (X+2*IBMX(I),Y+2*IBMY(I))-(X+2*IBMX(I+1),Y+2*IBMY(I+1)):NEXT I
  260. 2600  X=90:Y=30:XOLD=X:YOLD=Y:F=F+1000:F0=F:T=11:TOLD=T:TILT=0:TILTOLD=TILT:SY=13:ADVAN=1
  261. 2610  IF GAUGE=0 GOTO 2640
  262. 2620  LOCATE 1,28:PRINT " Score=" S:LOCATE 2,29:PRINT " Fall=" SY
  263. 2630  LOCATE 3,28:PRINT "Thrust=" T:LOCATE 4,30:PRINT "Fuel=" F:GOTO 2690
  264. 2640  LOCATE 1,30:PRINT"F   F   P":LOCATE 2,30:PRINT"u   a   o":LOCATE 3,30:PRINT"e   l   w":LOCATE 4,30:PRINT"l   l   e":LOCATE 5,30:PRINT"        r"
  265. 2650  LINE(241,0)-(257,35),1,BF:LINE(241,36)-(257,40),2,BF 'Fuel Gauge
  266. 2660  LINE(273,5)-(289,10),1,BF:LINE(273,11)-(289,40),2,BF:LINE(273,0)-(289,4),2,BF 'Fall Gauge
  267. 2670  LINE(304,15)-(319,25),1,BF:LINE(304,26)-(319,40),2,BF:LINE(304,0)-(319,14),2,BF 'Power Gauge
  268. 2680  G1=0:LINE (241,G1)-(257,G1),0:G2=10:LINE(273,G2)-(289,G2),3:G3=20:LINE(304,G3)-(319,G3),3
  269. 2690  PUT(X,Y),R1:BEEP:GOTO 60
  270.